/********************************************************************************
 * Project Name		[JavaEE_Web]
 * File Name     	[ChooseTag.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package jsp.tag.cases;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

/**
 * 模拟<c:choose><c:when><c:otherwise>标签
 * 
 * 开发3个标签: choose, when, otherwise<br/>
 * when标签有一个boolean类型的属性: test<br/>
 * choose是when和otherwise的父标签<br/>
 * when在otherwise之前使用<br/>
 * 
 * 在父标签choose中定义一个"全局"的boolean类型的flag: 用于判断子标签在满足条件的情况下是否执行<br/>
 * 1. 若when的test为true, 且when的父标签的flag也为true, 则执行when的标签体[正常输出标签体的内容],
 * 同时把flag设置为false<br/>
 * 2. 若when的test为true, 且when的父标签的flag为 false, 则不执行标签体<br/>
 * 3. 若flag为 true, otherwise执行标签体<br/>
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public class ChooseTag extends SimpleTagSupport {

	private boolean flag = true;

	public void setFlag(boolean flag) {
		this.flag = flag;
	}

	public boolean isFlag() {
		return flag;
	}

	@Override
	public void doTag() throws JspException, IOException {
		// 有标签体/子标签, 要调用invoke方法
		this.getJspBody().invoke(null);
	}
}
